The technology described herein relates to graphics processing systems, and in particular to the operation of graphics processing systems that include a cache.
As is known in the art, graphics processing is normally carried out by first dividing the output to be generated, such as a frame to be displayed, into a number of similar basic components (so-called “primitives”) to allow the graphics processing operations to be more easily carried out. These “primitives” are usually in the form of simple polygons, such as triangles and quadrilaterals.
The graphics primitives are usually generated by the applications program interface for the graphics processing system, using the graphics drawing instructions (requests) received from the application (e.g. game) that requires the graphics output.
Each primitive at this stage is usually defined by and represented as a set of vertices. Each vertex for a primitive will have associated with it a set of attribute values (such as position, colour, texture coordinates and other such attributes) representing those attributes (properties) of the primitive at the vertex in question. This attributes data is then used, for example, when rasterising and rendering the primitive(s) that uses (that includes) the vertex in order to generate the desired output of the graphics processing system.
Once primitives and their vertices have been generated and defined, they can be processed by the graphics processing system, in order, for example, to display the frame.
This process basically involves determining which sampling points of an array of sampling points covering the output area to be processed are covered by a primitive, and then determining the appearance each sampling point should have (e.g. in terms of its colour, etc.) to represent the primitive at that sampling point.
These processes, as well as other processes in the graphics processing system, use the attributes data associated with the vertices, for example, to determine an attribute (e.g. colour) value for each sampling point covered by a primitive. Commonly the attribute values are determined for a given sampling point by performing linear interpolation of the attribute values for the vertices associated with the primitive that the sampling point represents.
To avoid a request being made to main memory each time vertex attribute data is required, recently used attribute data for vertices may be held locally in a cache. Typically, a copy of the most recently used data stored in main memory will be stored in the cache, locally to where it is required, so that if subsequent request is made for the data, it can be accessed quickly and efficiently, e.g. consuming little power.
The Applicants believe that there remains scope for improvements to the organisation and handling of caches in graphics processing systems.